package com.qidian.tcba.dao;


import com.qidian.tcba.admin.model.dto.parkLot.*;
import com.qidian.tcba.admin.model.query.ParkLotRecordManageQueryDTO;
import com.qidian.tcba.admin.model.dto.parkLotManage.ParkLotRecordManageResultDTO;
import com.qidian.tcba.admin.model.dto.parkLotRecord.AuditStatusDTO;
import com.qidian.tcba.admin.model.dto.parkLotRecord.ManageParkRecordListDTO;
import com.qidian.tcba.admin.model.dto.parkLotRecord.ParkRecordListDTO;
import com.qidian.tcba.admin.model.dto.parkLotRecord.RecentRecordStageDTO;
import com.qidian.tcba.admin.model.entity.ParkLotRecordTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ParkLotRecordTaskMapper {
    int deleteByPrimaryKey(int id);

    int insert(ParkLotRecordTask record);

    ParkLotRecordTask selectByPrimaryKey(int id);

    List<ParkLotInfoDTO> selectAll();

    int updateByPrimaryKey(ParkLotRecordTask record);

    /**
     * 更新任务所在环节和审核状态

     * @return
     */
    int updateAuditAndStage(@Param("id") int id,
                            @Param("stage") int stage,
                            @Param("auditStatus") int auditStatus,
                            @Param("status") Integer status);

    /**
     * 获取当天(年)备案数
     * @param date
     * @return
     */
    int getTimeCount(String date);

    /**
     * 根据停车场名称获取id
     * @param name
     * @return
     */
    Integer getParkIdByName(String name);

    /**
     * 得到用户备案的总数
     * @param userId
     * @return
     */
    int getParkRecordNumber(int userId);

    /**
     * 根据用户id和备案任务表的状态查询对应状态的备案数量
     * @param userId
     * @param status
     * @return
     */
    int getDifferentStatusRecordNumber(int userId,int status);

    /**
     * 获取用户的所有备案任务
     * @param userId
     * @return
     */
    List<ParkLotRecordTask> getUserParkLotRecord(int userId);

    /**
     * 根据备案状态获取对应的备案列表
     * @param status
     * @return
     */
    List<ParkRecordListDTO> getParkRecordList(int status, int userId, int page, int size);

    /**
     * 获取两条备案审核流程
     * @param userId
     * @return
     */
    List<RecentRecordStageDTO> getRecentRecordList(int userId);

    /**
     * 根据关键词查询所有停车场名称
     * @param keyWord
     * @return
     */
    String getParkLotName(String keyWord);

    /**
     * 根据id获取流水号
     * @param taskId
     * @return
     */
    String getParkLotSno(int taskId);

    /**
     * 获取停车场设施基本信息
     * @param id
     * @return
     */
    ParkLotBaseInfoDTO getParkLotBaseInfo(int id);

    /**
     * 获取经营管理者基本信息
     * @param id
     * @return
     */
    ParkLotManagerBaseInfoDTO getParkLotManagerBaseInfo(int id);

    /**
     * 获取停车场附属设施基本信息
     * @param id
     * @return
     */
    ParkLotSettingInfoDTO getParkLotSettingInfo(int id);

    /**
     * 删除备案任务
     * @param taskId
     * @return
     */
    Integer deleteParkLotTask(int taskId);

    /**
     * 作废
     * @param id
     * @return
     */
    int cancellationParkLot(int id);


    /**
     * 获取所有备案任务的审核状态
     * @return
     */
    List<AuditStatusDTO> getAuditStatus(@Param("stage") int stage,@Param("districtId") int districtId);

    /**
     * 管理员获取审核列表
     * @param districtId
     * @return
     */
    List<ManageParkRecordListDTO> getManageParkRecordListDTO(@Param("districtId") int districtId,
                                                             @Param("index") int index,
                                                             @Param("size") int size);

    /**
     * 停车备案管理
     * @param parkLotRecordManageQueryDTO
     * @return
     */
    List<ParkLotRecordManageResultDTO> getManageResultList(ParkLotRecordManageQueryDTO parkLotRecordManageQueryDTO);
}